"""
提示模板模块 - 提供各种分析任务的提示模板
"""

# 股票分析提示模板
STOCK_QUERY_PARSE_TEMPLATE = """
从以下股票分析请求中提取信息：
{user_query}
只输出JSON格式：{"symbol": "股票代码", "analysis_type": "估值分析|财务分析|技术分析|资金流向分析|综合分析"}
确保：1.使用双引号 2.无注释 3.代码为6位数字
"""

# 基本信息分析模板
STOCK_BASIC_INFO_ANALYSIS_TEMPLATE = """
分析以下股票基本信息：{basic_info}
生成简洁的基本信息分析总结(Markdown格式)，包含：公司概述、行业地位、主营业务、关键特点，不超过200字。
"""

# 估值数据分析模板
STOCK_VALUATION_ANALYSIS_TEMPLATE = """
分析以下股票估值数据：
基本信息：{basic_info}
估值数据：{valuation_data}
生成估值分析总结(Markdown格式)，包含：核心估值指标分析、历史估值对比、行业估值比较、估值溢价/折价原因，不超过250字。
"""

# 财务数据分析模板
STOCK_FINANCIAL_ANALYSIS_TEMPLATE = """
分析以下财务数据：
基本信息：{basic_info}
财务数据：{financial_data}
生成财务分析总结(Markdown格式)，包含：盈利能力、资产质量、现金流状况、财务风险、增长潜力，不超过250字。
"""

# 历史价格数据分析模板
STOCK_HISTORICAL_ANALYSIS_TEMPLATE = """
分析以下历史价格数据：
基本信息：{basic_info}
历史数据：{history_data}
生成历史价格分析总结(Markdown格式)，包含：价格趋势、波动性、关键价格水平、成交量分析，不超过250字。
"""

# 资金流向分析模板
STOCK_FUND_FLOW_ANALYSIS_TEMPLATE = """
分析以下资金流向数据：
基本信息：{basic_info}
资金流向：{fund_flow_data}
生成资金流向分析总结(Markdown格式)，包含：主力资金流向、机构参与度、资金分布、北向/南向资金动向，不超过250字。
"""

# 新闻数据分析模板
STOCK_NEWS_ANALYSIS_TEMPLATE = """
分析以下相关新闻：
基本信息：{basic_info}
相关新闻：{news_data}
生成新闻分析总结(Markdown格式)，包含：关键消息影响、政策环境、行业动态、公司重大事件，不超过250字。
"""

# 技术指标分析模板
STOCK_TECHNICAL_INDICATORS_TEMPLATE = """
基于以下历史数据计算并分析技术指标：{history_data}
分析MA、MACD、KDJ、RSI、布林带等指标，生成技术分析总结(Markdown格式)，说明市场状况和可能的交易信号，不超过250字。
"""

# 综合分析模板
STOCK_SYNTHESIS_ANALYSIS_TEMPLATE = """
基于各分析总结，生成股票综合报告：
用户需求：{user_query}
股票代码：{symbol}
各项分析：{summaries}
生成全面的分析报告(Markdown格式)，包含：核心结论、基本面分析、估值分析、技术面分析、资金面分析、消息面分析、风险因素、投资建议。
"""

# 基金分析提示模板
FUND_QUERY_PARSE_TEMPLATE = """
从以下基金分析请求中提取信息：
{user_query}
只输出JSON格式：{"symbol": "基金代码", "analysis_type": "净值分析|持仓分析|业绩分析|综合分析"}
确保：1.使用双引号 2.无注释 3.代码为6位数字
"""

# 基金分析特定数据模板
FUND_BASIC_INFO_ANALYSIS_TEMPLATE = """
分析以下基金基本信息：{basic_info}
生成基金信息分析总结(Markdown格式)，包含：基金类型与投资目标、管理团队、规模与历史、费率结构，不超过200字。
"""

# 基金净值分析模板
FUND_NAV_ANALYSIS_TEMPLATE = """
分析以下基金净值数据：
基本信息：{basic_info}
净值数据：{nav_data}
生成净值分析总结(Markdown格式)，包含：净值走势、波动性、风险收益特征、同类基金对比，不超过250字。
"""

# 基金持仓分析模板
FUND_PORTFOLIO_ANALYSIS_TEMPLATE = """
分析以下基金持仓数据：
基本信息：{basic_info}
持仓数据：{portfolio_data}
生成持仓分析总结(Markdown格式)，包含：持仓结构、行业配置、重仓股分析、持仓变化趋势、投资风格，不超过250字。
"""

# 基金历史业绩分析模板
FUND_PERFORMANCE_ANALYSIS_TEMPLATE = """
分析以下基金历史业绩数据：
基本信息：{basic_info}
历史数据：{history_data}
生成业绩分析总结(Markdown格式)，包含：不同时间段收益率、业绩稳定性、与业绩基准对比、风险调整后收益，不超过250字。
"""

# 基金综合分析模板
FUND_SYNTHESIS_ANALYSIS_TEMPLATE = """
基于各分析总结，生成基金综合报告：
用户需求：{user_query}
基金代码：{symbol}
各项分析：{summaries}
生成全面的分析报告(Markdown格式)，包含：核心结论、基金概况、净值表现、持仓结构、历史业绩、风险收益特征、适合投资人类型、投资建议。
"""

# 期货分析提示模板
FUTURE_QUERY_PARSE_TEMPLATE = """
从以下期货分析请求中提取信息：
{user_query}
只输出JSON格式：{"symbol": "期货代码", "analysis_type": "技术分析|持仓分析|综合分析"}
确保：1.使用双引号 2.无注释
"""

# 期货特定数据分析模板
FUTURE_BASIC_INFO_ANALYSIS_TEMPLATE = """
分析以下期货基本信息：{basic_info}
生成期货信息分析总结(Markdown格式)，包含：合约规格、交割方式、保证金要求、市场流动性，不超过200字。
"""

# 期货价格分析模板
FUTURE_PRICE_ANALYSIS_TEMPLATE = """
分析以下期货价格数据：
基本信息：{basic_info}
历史数据：{history_data}
生成价格分析总结(Markdown格式)，包含：价格趋势、季节性模式、关键价格区间、跨期价差关系，不超过250字。
"""

# 期货技术分析模板
FUTURE_TECHNICAL_ANALYSIS_TEMPLATE = """
分析以下期货数据：
基本信息：{basic_info}
历史数据：{history_data}
生成期货技术分析总结(Markdown格式)，包含：价格趋势、支撑与阻力位、技术指标分析、成交量分析、持仓量变化，不超过250字。
"""

# 期货综合分析模板
FUTURE_SYNTHESIS_ANALYSIS_TEMPLATE = """
基于各分析总结，生成期货综合报告：
用户需求：{user_query}
期货代码：{symbol}
各项分析：{summaries}
生成全面的分析报告(Markdown格式)，包含：核心结论、基本面分析、技术面分析、市场情绪与资金面、相关市场影响因素、风险因素、交易策略建议。
"""

# 期权分析提示模板
OPTION_QUERY_PARSE_TEMPLATE = """
从以下期权分析请求中提取信息：
{user_query}
只输出JSON格式：{"symbol": "期权代码", "analysis_type": "希腊字母分析|波动率分析|综合分析"}
确保：1.使用双引号 2.无注释
"""

# 期权特定数据分析模板
OPTION_BASIC_INFO_ANALYSIS_TEMPLATE = """
分析以下期权基本信息：{basic_info}
生成期权信息分析总结(Markdown格式)，包含：合约结构、行权价值、到期日与时间价值、特殊条款，不超过200字。
"""

# 期权希腊字母分析模板
OPTION_GREEK_ANALYSIS_TEMPLATE = """
分析以下期权希腊字母数据：
基本信息：{basic_info}
希腊字母指标：{greek_data}
生成希腊字母分析总结(Markdown格式)，包含：Delta对冲策略、Gamma风险、Theta时间衰减、Vega与波动率敏感度、Rho与利率敏感性，不超过250字。
"""

# 期权波动率分析模板
OPTION_VOLATILITY_ANALYSIS_TEMPLATE = """
分析以下期权波动率数据：
基本信息：{basic_info}
波动率数据：{volatility_data}
生成波动率分析总结(Markdown格式)，包含：隐含波动率与历史波动率、波动率微笑/偏斜、波动率期限结构、波动率异常与交易机会，不超过250字。
"""

# 期权综合分析模板
OPTION_SYNTHESIS_ANALYSIS_TEMPLATE = """
基于各分析总结，生成期权综合报告：
用户需求：{user_query}
期权代码：{symbol}
各项分析：{summaries}
生成全面的分析报告(Markdown格式)，包含：核心结论、合约特性、风险敞口(希腊字母)、波动率环境、与标的资产关系、策略优化建议、交易机会与风险。
"""

def get_analysis_prompt(analysis_type: str, asset_type: str = "stock") -> str:
    """获取分析提示模板"""
    # 股票分析提示模板
    if asset_type == "stock":
        if analysis_type == "估值分析":
            return STOCK_VALUATION_ANALYSIS_TEMPLATE
        elif analysis_type == "财务分析":
            return STOCK_FINANCIAL_ANALYSIS_TEMPLATE
        elif analysis_type == "技术分析":
            return STOCK_HISTORICAL_ANALYSIS_TEMPLATE
        elif analysis_type == "资金流向分析":
            return STOCK_FUND_FLOW_ANALYSIS_TEMPLATE
        else:  # 综合分析
            return STOCK_SYNTHESIS_ANALYSIS_TEMPLATE
    
    # 基金分析提示模板
    elif asset_type in ["fund", "etf"]:
        if analysis_type == "净值分析":
            return FUND_NAV_ANALYSIS_TEMPLATE
        elif analysis_type == "持仓分析":
            return FUND_PORTFOLIO_ANALYSIS_TEMPLATE
        else:
            return FUND_SYNTHESIS_ANALYSIS_TEMPLATE
    
    # 期货分析提示模板
    elif asset_type == "future":
        if analysis_type == "技术分析":
            return FUTURE_TECHNICAL_ANALYSIS_TEMPLATE
        else:
            return FUTURE_SYNTHESIS_ANALYSIS_TEMPLATE
    
    # 期权分析提示模板
    elif asset_type == "option":
        if analysis_type == "希腊字母分析":
            return OPTION_GREEK_ANALYSIS_TEMPLATE
        else:
            return OPTION_SYNTHESIS_ANALYSIS_TEMPLATE
    
    # 默认返回股票综合分析提示模板
    return STOCK_SYNTHESIS_ANALYSIS_TEMPLATE

def get_query_parse_prompt(asset_type: str = "stock") -> str:
    """获取查询解析提示模板"""
    if asset_type == "stock":
        return STOCK_QUERY_PARSE_TEMPLATE
    elif asset_type in ["fund", "etf"]:
        return FUND_QUERY_PARSE_TEMPLATE
    elif asset_type == "future":
        return FUTURE_QUERY_PARSE_TEMPLATE
    elif asset_type == "option":
        return OPTION_QUERY_PARSE_TEMPLATE
    else:
        return STOCK_QUERY_PARSE_TEMPLATE

def get_specific_analysis_prompt(data_type: str, asset_type: str = "stock") -> str:
    """获取特定数据分析提示模板"""
    # 股票特定数据分析提示模板
    if asset_type == "stock":
        if data_type == "basic_info":
            return STOCK_BASIC_INFO_ANALYSIS_TEMPLATE
        elif data_type == "valuation":
            return STOCK_VALUATION_ANALYSIS_TEMPLATE
        elif data_type == "financial":
            return STOCK_FINANCIAL_ANALYSIS_TEMPLATE
        elif data_type == "history":
            return STOCK_HISTORICAL_ANALYSIS_TEMPLATE
        elif data_type == "fund_flow":
            return STOCK_FUND_FLOW_ANALYSIS_TEMPLATE
        elif data_type == "news":
            return STOCK_NEWS_ANALYSIS_TEMPLATE
        elif data_type == "technical":
            return STOCK_TECHNICAL_INDICATORS_TEMPLATE
    
    # 基金特定数据分析提示模板
    elif asset_type in ["fund", "etf"]:
        if data_type == "basic_info":
            return FUND_BASIC_INFO_ANALYSIS_TEMPLATE
        elif data_type == "nav":
            return FUND_NAV_ANALYSIS_TEMPLATE
        elif data_type == "portfolio":
            return FUND_PORTFOLIO_ANALYSIS_TEMPLATE
        elif data_type == "performance":
            return FUND_PERFORMANCE_ANALYSIS_TEMPLATE
    
    # 期货特定数据分析提示模板
    elif asset_type == "future":
        if data_type == "basic_info":
            return FUTURE_BASIC_INFO_ANALYSIS_TEMPLATE
        elif data_type == "price":
            return FUTURE_PRICE_ANALYSIS_TEMPLATE
        elif data_type == "technical":
            return FUTURE_TECHNICAL_ANALYSIS_TEMPLATE
    
    # 期权特定数据分析提示模板
    elif asset_type == "option":
        if data_type == "basic_info":
            return OPTION_BASIC_INFO_ANALYSIS_TEMPLATE
        elif data_type == "greek":
            return OPTION_GREEK_ANALYSIS_TEMPLATE
        elif data_type == "volatility":
            return OPTION_VOLATILITY_ANALYSIS_TEMPLATE
    
    # 默认返回股票基本信息分析提示模板
    return STOCK_BASIC_INFO_ANALYSIS_TEMPLATE

def get_synthesis_prompt(asset_type: str = "stock") -> str:
    """获取综合分析提示模板"""
    if asset_type == "stock":
        return STOCK_SYNTHESIS_ANALYSIS_TEMPLATE
    elif asset_type in ["fund", "etf"]:
        return FUND_SYNTHESIS_ANALYSIS_TEMPLATE
    elif asset_type == "future":
        return FUTURE_SYNTHESIS_ANALYSIS_TEMPLATE
    elif asset_type == "option":
        return OPTION_SYNTHESIS_ANALYSIS_TEMPLATE
    else:
        return STOCK_SYNTHESIS_ANALYSIS_TEMPLATE
